#!/bin/bash # ========================================================== # OneDrive Cache Reset + Restart Script - macOS # ========================================================== echo "INFO: Starting OneDrive cache reset..." if [[ ! "$HOME" =~ ^/Users/[a-zA-Z0-9._-]+$ ]]; then echo "ERROR: Invalid HOME path." exit 1 fi # ---------------------------------------------------------- # Find OneDrive Application # ---------------------------------------------------------- ONEDRIVE_PATHS=( "/Applications/OneDrive.app" "$HOME/Applications/OneDrive.app" ) ONEDRIVE_APP="" for path in "${ONEDRIVE_PATHS[@]}"; do if [[ -d "$path" ]]; then ONEDRIVE_APP="$path" break fi done # ---------------------------------------------------------- # Check Installation # ---------------------------------------------------------- if [[ -z "$ONEDRIVE_APP" ]]; then echo "ERROR: OneDrive is not installed." exit 1 fi echo "INFO: OneDrive found at:" echo "$ONEDRIVE_APP" # ---------------------------------------------------------- # Stop OneDrive # ---------------------------------------------------------- if pgrep -x "OneDrive" > /dev/null 2>&1; then echo "INFO: Stopping OneDrive..." # Gracefully quit OneDrive osascript -e 'quit app "OneDrive"' if [[ $? -ne 0 ]]; then echo "WARNING: Failed to send quit command to OneDrive." fi sleep 10 # Force stop if still running if pgrep -x "OneDrive" > /dev/null 2>&1; then echo "INFO: Force killing OneDrive..." pkill -9 "OneDrive" if [[ $? -ne 0 ]]; then echo "ERROR: Failed to kill OneDrive process." exit 1 fi fi echo "INFO: OneDrive stopped." else echo "INFO: OneDrive is not running." fi # ---------------------------------------------------------- # Clear OneDrive Cache # ---------------------------------------------------------- CACHE_PATH="$HOME/Library/Caches/com.microsoft.OneDrive" echo "INFO: Clearing OneDrive cache..." if [[ -d "$CACHE_PATH" ]]; then rm -rf "$CACHE_PATH" if [[ $? -eq 0 ]]; then echo "INFO: OneDrive cache cleared successfully." else echo "ERROR: Failed to clear OneDrive cache." exit 1 fi else echo "WARNING: Cache folder does not exist." fi # ---------------------------------------------------------- # Restart OneDrive # ---------------------------------------------------------- echo "INFO: Starting OneDrive..." open "$ONEDRIVE_APP" if [[ $? -ne 0 ]]; then echo "ERROR: Failed to start OneDrive." exit 1 fi sleep 15 echo "INFO: OneDrive reset completed successfully."